package com.ayu.shortlink.distribute.utils;

/**
 * Lua脚本工具类
 */
public class LuaScriptUtil {
    //结果标识存储在第14位 所以从1需要向左移动13位
    // 2^13 约等于 8000
    private final static Integer SECOND_FIELD_BITS = 13;

    /**
     * 将两个字段组合成一个int
     */
    public static int combineFields(boolean decrementFlag, int userRecord) {
        return (decrementFlag ? 1 : 0) << SECOND_FIELD_BITS | userRecord;
    }

    /**
     * Lua脚本执行失败与否
     * @return true 表示成功 false 表示失败
     */
    public static Boolean isSuccess(Long combine){
        return (1L << SECOND_FIELD_BITS & combine) != 0L;
    }

    /**
     * 获取用户集合数量
     * @return 用户集合数量
     */
    public static Long getUserBatchSize(Long combine){
        return ((1L << SECOND_FIELD_BITS) - 1) & combine;
    }
}
